home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / byt1186b.arc / RUNGKUT.LBR / ONEBODY.BAS < prev    next >
BASIC Source File  |  1986-04-11  |  2KB  |  46 lines

  1. 10 REM N = THE NUMBER OF INTEGRATORS
  2. 20 REM V(I) = INTEGRATOR INPUTS
  3. 30 REM X(I) = INTEGRATOR OUTPUTS
  4. 40 REM X(1) = VELOCITY; X(2) = DISPLACEMENT
  5. 50 REM C = THE DAMPING CONSTANT
  6. 60 REM M = MASS; K = SPRING CONSTANT
  7. 70 REM TMIN = TIME AT WHICH PRINTING TO OUTPUT FILE BEGINS
  8. 80 REM TMAX = TIME AT WHICH PRINTOUT ENDS
  9. 90 REM DT = TIME STEP SIZE
  10. 100 REM ********************************
  11. 110 OPEN"OUT.DAT" FOR OUTPUT AS #1
  12. 120 N=2:C=1500:M=2:K=100000!
  13. 130 DIM X(N),K1(N),K2(N),K3(N),K4(N),DUM(N),V(N)
  14. 140 DT=.0001:TMIN=DT:TMAX=500*DT
  15. 150 REM FNX(T) IS THE DRIVING FORCE
  16. 160 DEF FNX(T)=5000*(SIN(200*T))^5
  17. 170 REM NEXT ARE THE INITIAL CONDITIONS ON VELOCITY,X(1),AND DISPLACEMENT X(2)
  18. 180 X(1)=.001:X(2)=.001
  19. 190 REM NEXT IS THE EQUATION FOR THE INPUT TO INTEGRATOR #1
  20. 200 REM IN THIS CASE, THERE IS COULOMB DAMPING
  21. 210 V(1)=(FNX(T)-K*X(2)-C*SGN(X(1)))/M:V(2)=X(1)
  22. 220 REM NEXT ARE THE STEPS IN THE INTEGRATION ACROSS ONE TIME STEP
  23. 230 COUNT=COUNT+1:IF COUNT=2 THEN 260:IF COUNT=3 THEN 270:IF COUNT=4 THEN 280
  24. 240 FOR I= 1 TO N:K1(I)=DT*V(I):NEXT I
  25. 250 T=T+DT/2:FOR I=1 TO N:DUM(I)=X(I):X(I)=DUM(I)+K1(I)/2:NEXT I:IF COUNT=1 THEN 210
  26. 260 FOR I= 1 TO N:K2(I)=DT*V(I):X(I)=DUM(I)+K2(I)/2:NEXT I:IF COUNT=2 THEN 210
  27. 270 FOR I=1 TO N:K3(I)=DT*V(I):X(I)=DUM(I)+K3(I):NEXT I:T=T+DT/2:IF COUNT=3 THEN 210
  28. 280 FOR I=1 TO N:K4(I)=DT*V(I):X(I)=DUM(I)+(K1(I)+K4(I))/6+(K2(I)+K3(I))/3:NEXT I
  29. 290 REM NEXT STEPS APPROXIMATE STATIC/DYNAMIC FRICTION
  30. 300 IF ABS(X(1))>.5 THEN 330
  31. 310 C=3000
  32. 320 GOTO 340
  33. 330 C=1500
  34. 340 IF X(2)>1! THEN 440
  35. 350 REM FROM RUNNING THIS A FEW TIMES, WE EXPECT ABS(DISPLACEMENT) < .030
  36. 360 REM OVER THIS RANGE, THE NONLINEAR SPRING RATE CAN BE APPROXIMATED AS FOLLOWS:
  37. 370 K=100000!+300000!*(SIN(50*X(2)))^4
  38. 380 IF T<TMIN THEN 210
  39. 390 PRINT #1,FNX(T):FOR I=1 TO N:PRINT #1,X(I):NEXT I
  40. 400 IF T>TMAX THEN 420
  41. 410 GOTO 210
  42. 420 CLOSE
  43. 430 GOTO 450
  44. 440 PRINT" DIVERGENT OSCILLATION ENCOUNTERED"
  45. 450 END
  46.